# 循环语句
# while循环的基本使用
"""
while 条件：    # 条件类型使用布尔类型和比较运算
    条件满足时，执行事情1
    条件满足时，执行事情2
    条件满足时，知识事情3
    .....
1.条件需提供布尔类型结果，True继续,Fale停止
2.空格缩进不能忘
3.请规划好循环终止条件，否则将无限循环
# 案例
i = 0
while i < 100:
    print("小美，我喜欢你")
    i += 1
"""
"""
# while循环的基础案例

import random   # 随机生成一个数字
num = random.randint(1, 100)

count = 0      # 定义一个变量用于储存猜的次数
flag = True    # 定义一个bool类型用于表示while判断真与假
while flag:
    guess_num = int(input("请输入你猜想的数字："))
    count += 1
    if guess_num == num:
        print("恭喜你，猜对了")
        flag = False
    else:
        if guess_num > num:
            print("猜的太大了")
        else:
            print("猜的太小了")
print(f"你一共猜了：{count}次")
"""

# while循环的嵌套应用
"""
同判断语句的嵌套一样，循环语句的嵌套，要注意空格缩进基于空格缩进来决定层次关系.
注意条件的设置，避免出现无限循环(除非真的需要无限循环)
"""
"""
# 定义一个变量表示表白天数
i = 1
while i <= 100:
    print(f"今天是表白的{i}天")

    # 定义一个变量表示玫瑰花数量
    j = 1
    while j <= 10:
        print(f"送给小美的第{j}朵玫瑰花")
        j += 1
        print("小美，我喜欢你")
    i += 1

print(f"坚持到第{i-1}天，表白成功")
"""
# while 循环嵌套案例

# 知识补充1 print输出不换行
"""
默认print输出控制器会出现换行：
print("Hello")
print("World")
使用以下方式可以不对输出进行换行,使用一个end等于空字符串：end是print语句的一个传参功能
print("Hello", end='')
print("World", end='')
使用\n可以使输出数据换行：
print("hello\nworld")
"""
# 知识补充2 --制表符
"""
在字符串中,有一个特殊的符号：\t,等效于键盘上的tab键
它可以使我们输出的多行字符串进行对其
print("Hello World")
print("Hello =best")
使用\t：
print("Hello\tWorld")
print("itheima\tbest")
"""
# 输出九九乘法表
"""
i = 1
while i <= 9:
    f = 1
    while f <= i:
        print(f"{i}*{f}={i*f}\t", end='')
        f += 1
    i += 1
    print()
"""

# for循环
"""
除了while循环语句外，Python同样提供了for循环语句。两者能完成的功能基本差不多，但仍有一些区别:
while循环的循环条件是自定义的，自行控制循环条件for循环是一种”轮询”机制，是对一批内容进行”逐个处理
for循环就是将“代办事项”逐个完成的循环机制
for循环语句格式：
for 临时变量 in 待处理数据集:
    循环满足条件时执行的代码
# for循环处理字符串
name = "andong"
for x in name:
    print(x)
    
同while循环不同，for循环是无法定义循环条件的只能从被处理的数据集中，依次取出内容进行处理
所以，理论上讲，Python的for循环无法构建无限循环 (被处理的数据集不可能无限大)

"""

# range语句
"""
for循环语句，本质上是遍历:序列类型
尽管除字符串外，其它的序列类型目前没学习到，但是不妨碍我们通过学习range语句，获得一个简单的数字序列。
语法1
range(num)
获取一个从0开始，到num结束的数字序列 (不含num本身)
如range(5)取得的数据是:[0,1,2,3,4]

for x in range(10):
    print(x)

语法2:
range(num1，num2)
获得一个从num1开始，到num2结束的数字序列(不含num2本身)如，range(5,10)取得的数据是:[5,6,7,8, 9]
语法3:
range(num1，num2，step)获得一个从num1开始，到num2结束的数字序列 (不含num2本身)数字之间的步长，以step为准(step默认为1)
如，range(5,10.2)得的数据是: [5,7,9]
for x in range(5, 10, 2):
    print(x)
"""
"""
count = 0
for x in range(1, 100):
    if x % 2 == 0:
        count += 1

print("1~100（不含100）中有: %d个整数" % count)
"""

# 变量作用域
"""
循环内
  是编程规范的限定，而非强制限定
  不遵守也能正常运行，但是不建议这样做
  如需访问临时变量，可以预先在循环外定义它
i = 0
for i in range(5):
    print(i)
print(i)
"""

# for循环的嵌套使用
"""
同while一样：
for 临时变量 in 待处理的数据集
    满足条件后要做的事情1
    满足条件后要做的事情2 ...
    for 临时变量 in 待处理的数据集
        满足条件后要做的事情1
        满足条件后要做的事情2
# 表白案列。100天，一天送10朵玫瑰花
for i in range(1, 101):
    print("今天是表白的第：%d天" % i)
    for m in range(1, 11):
        print("给小美送的第%d朵玫瑰花" % m)
    print("小美，我喜欢你")
# 使用for循环打印99乘法表
for x in range(1, 10):

    for j in range(1, x+1):
        print(f"{j}*{x}={x*j}\t", end='')
    print()
"""

# continue 和 break语句
"""
continue语句
continue关键字用于:中断本次循环，直接进入下一次循环，不跳出整体循环
continue可以用于:for循环和while循环，效果一致，所在的循环临时终端
案列：
for i in range(1,6):
    print("语句1")
    continue
    print("语句2")
嵌套案列：
for i in range(1,6):
    print("语句1")

    for f in range(1,6):
        print("语句2")
        continue
        print("语句3")
    print("语句4")
"""
"""
break语句
break关键字用于:直接结束循环，循环中遇到break，整个循环全部结束
break可以用于:for循环和while循环，效果一致，同样只对所在的循环生效
案列：
for i in range(1,7):
    print("语句1")
    break
    print("语句2")
print("语句3")
嵌套案列
for x in range(1,100):
    print("语句1")

    for i in range(1,100):
        print("语句2")
        break
        print("语句3")
    print("语句4")
"""

# 循环综合案列

all = 10000
i = 1     # 员工
while i <= 20:


    import random
    mark = random.randint(1, 10)    # 随机生产一个数1~10

    if mark < 5:
        print(f"员工{i}，绩效分{mark}，低于5，不发工资，下一位")
        continue

    if all >= 1000:
        all -= 1000
        print(f"向员工{i}发放工资1000元，账户余额还剩余{all}元")
    else:
        print("工资发完了，下个月在领取吧!")
        break


